/**
 * Copyright 2009 - ChunMap
 * 
 * 这个文件是ChunMap项目的一部分。
 * ChunMap是开源软件。
 * 你可以自由复制、传播本项目的下载包文件，但必须保持其完整性。
 * 我们不用对使用中的风险及由此造成的损失承担任何责任。
 * 详细情况请见《ChunMap许可协议》。

 * 想了解更多有关ChunMap的信息，请访问http://code.google.com/p/chunmap/
 */
package chunmap.orm.sql.maker;

import java.util.ArrayList;
import java.util.List;

import chunmap.orm.mapping.Table;
import chunmap.orm.mapping.column.Column;
import chunmap.orm.sql.Sql;
import chunmap.orm.sql.SqlParameter;
import chunmap.util.Function;

/**
 * @author yangjiandong
 *
 */
public class InsertMaker{
	public static Sql getSql(Table table,final Object object) {

		final StringBuilder s = new StringBuilder();
		s.append("insert into ");
		s.append(table.getName() + "(");

		final List<SqlParameter> sqlParameters=new ArrayList<SqlParameter>();
		table.each(new Function(){
			@Override
			public Object call(Object... args) {
				Column c=(Column)args[0];
				Integer i=(Integer)args[1];
				Object value=c.getValue(object);
				
				s.append(c.getDbName() + ",");
				
				SqlParameter p=new SqlParameter(c.getDataType(),value,i+1);
				sqlParameters.add(p);
				
				return null;
			}});
		
		s.deleteCharAt(s.length() - 1);
		s.append(")values(");
		for (int i = 0, n = sqlParameters.size(); i < n; i++) {
			s.append("?,");
		}
		s.deleteCharAt(s.length() - 1);
		s.append(")");

		Sql sql= new Sql(s.toString(),Sql.NoneExecute);
		sql.addAllSqlParameters(sqlParameters);
		return sql;
	}
	

}
